const express = require('express')
const router = express.Router()
const { UserModel } = require('../model/index')
const { setToken } = require('../utils/token')
const bcrypt = require('bcrypt')

// 创建用户，保存用户信息
router.post('/register', (req, res) => {
  // 获取待创建用户的用户名与密码
  const {username, password, phone} = req.body
  // 对密码进行加密处理
  bcrypt.hash(password, 10, (err, hash) => {
    if (err) {
      res.json({
        code: 400,
        data: {
          message: err.message
        }
      })
      return
    }

    // 保存到数据库中
    new UserModel({username, password: hash, phone})
      .save()
      .then(resData => {
        res.json({
          code: 200,
          data: resData
        })
      }).catch(err => {
        res.json({
          code:400,
          data:err
        })
      })
  })
})
router.post('/login', (req, res, next) => {
  const { username, password } = req.body
  UserModel.findOne({username})
    .then(resData => {
      if (resData) { // 有用户信息
        // 比较密码是否正确
        bcrypt.compare(password, resData.password, function(err, result) {
          if (err) {
            res.json({
              code: 400,
              data: {
                message: err.message
              }
            })
            return
          }
          if (result) { // 用户登录成功
            /* 生成 token 数据 */
            // 待保存到 token 中的数据
            // const payload = {
            //   username,
            //   exp: Math.ceil(Date.now() / 1000) + 5 * 60
            // }
            // // token 编码的密钥
            // const secret = '1947osfjljasdflkasfklasldfj'
            // // 编码
            // const token = jwt.encode(payload, secret)
            const plyload = {
              username
            }
            const token = setToken(plyload)
            // 向前端返回数据
            res.json({
              code: 200,
              data: {
                valid: true,
                userInfo: {
                  username,
                  resData,
                  token,
                  resData
                }
              }
            })
          } else {
            res.json({
              code: 200,
              data: {
                valid: false,
                message: '用户名或密码错误'
              }
            })
          }
        })
      } else { // 没有用户信息
        res.json({
          code: 200,
          data: {
            valid: false,
            message: '用户名或密码错误'
          }
        })
      }
    })
})

module.exports = router